import time
import os
import cgi
from google.appengine.api import mail
from google.appengine.ext import db
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from django.utils import simplejson

class Evento(db.Model):
	id = db.ReferenceProperty
	Nombre = db.StringProperty(multiline=False)
	Fecha = db.DateTimeProperty
	Lugar = db.StringProperty(multiline=False)
	Hora = db.StringProperty(multiline=False)
	Status = db.IntegerProperty

class Registros(db.Model):
	Nombre = db.StringProperty(multiline=False)
	APaterno = db.StringProperty(multiline=True)
	AMaterno = db.StringProperty(multiline=False)
	Mail = db.StringProperty(multiline=False)
	FecNacimiento = db.StringProperty(multiline=False)
	GradoMax = db.StringProperty(multiline=False)
	date = db.DateTimeProperty(auto_now_add=True)
	Evento=db.StringProperty(multiline=False)
	Twitter=db.StringProperty(multiline=False)

class Register(webapp.RequestHandler):
	def post(self):							
		reg = Registros()
		reg.Nombre = self.request.get('Nombre')
		reg.Mail = self.request.get('Mail')
		reg.APaterno = self.request.get('APaterno')
		reg.AMaterno = self.request.get('AMaterno')
		reg.FecNacimiento = self.request.get('FecNacimiento')
		reg.GradoMax = self.request.get('GradoMax')
		reg.Evento = self.request.get('Evento')
		reg.Twitter= "@"+self.request.get('Twitter')
		
		self.response.headers['Content-Type'] = 'text/html'
		if not mail.is_email_valid(reg.Mail):
			self.response.out.write('invalid email address')
			self.response.out.write(simplejson.dumps(result))			
		else:
			reg = Registros()
			reg.Nombre = self.request.get('Nombre')
			reg.Mail = self.request.get('Mail')
			reg.APaterno = self.request.get('APaterno')
			reg.AMaterno = self.request.get('AMaterno')
			reg.FecNacimiento = self.request.get('FecNacimiento')
			reg.GradoMax = self.request.get('GradoMax')
			reg.Evento = self.request.get('Evento')
			reg.Twitter= self.request.get('Twitter')
			reg.put()
			mail.send_mail(sender="darkvander@gmail.com",
				to="contacto@laguna-gtug.org",
				subject="Nuevo Registro a Evento de Laguna-GTUG",
				body="Se agrego contacto:"+reg.Nombre+" "+reg.APaterno+" - "+reg.Mail+"\n Twitter:"+reg.Twitter)
				
			mail.send_mail(sender="darkvander@gmail.com",
				to=reg.Mail,
				subject="Bienvenido al evento de Laguna GTUG",
				body=reg.Nombre+" gracias por registrarte a nuestro nuevo evento! \n Por favor tambien registrate en http://www.meetup.com/GTUG-Campout/16215/ para que los GTUGS del mundo vean el interes de la Laguna en este tipo de eventos.\n Happy Coding! ")
									
			self.response.out.write("<font face=Verdana size=-1>Registered succesfully (email sent with your confirmation). Don't forget your laptop. Happy Coding</font>")		

class Lista(webapp.RequestHandler):
	def get(self):
		self.response.headers['Content-Type'] = 'text/html'
		regs = db.GqlQuery("SELECT * FROM Registros where Evento='5'")
		self.response.out.write("<font face='Verdana' size='-1'><h1>Registrados al Evento</h1><br><table>")					
		i=0
		for reg in regs:			
			i+=1
			self.response.out.write("<tr><td>")
			self.response.out.write(i)
			self.response.out.write("</td><td>")
			self.response.out.write("<td>")
			self.response.out.write(reg.Nombre)
			self.response.out.write(" ")
			self.response.out.write(reg.APaterno)
			self.response.out.write(" ")
			self.response.out.write(reg.AMaterno)
			self.response.out.write("|</td><td>")
			self.response.out.write(reg.Mail)
			self.response.out.write("|</td><td>")
			self.response.out.write(reg.FecNacimiento)
			self.response.out.write("|</td><td>")
			self.response.out.write(reg.GradoMax)
			self.response.out.write("|</td><td>")
			self.response.out.write(reg.Evento)
			self.response.out.write("|</td><td>")			
			self.response.out.write(reg.Twitter)
			self.response.out.write("|</td><tr>")
		self.response.out.write("</table></font>")	
			
	
class Borra(webapp.RequestHandler):
	def get(self):
		self.response.headers['Content-Type'] = 'text/html' 
		regs = db.GqlQuery("SELECT * "
                            "FROM Registros WHERE APaterno='Urby'")
		for reg in regs:
			reg.delete()
				
				
class Invita(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/html' 
        regs = db.GqlQuery("SELECT * FROM Registros")
        enviados = 0
        for reg in regs:
            enviados += 1		
            self.response.out.write("Correo enviado a "+reg.Mail+"<br>"+str(enviados))	
            mail.send_mail(sender="darkvander@gmail.com",
			   to=reg.Mail,
			   subject="Informacion de Laguna GTUG",
			   body="Hola "+reg.Nombre+", gracias por registrarte a nuestro nuevo evento. Te estaremos esperando con gusto!\n\nPor favor, si no lo has hecho, tambien registrate en http://www.meetup.com/GTUG-Campout/16215/ para que los GTUGs del mundo vean tu interes en estos eventos! \n\nPreparate, lee un poco acerca de HTML5 y como utilizarlo con los lenguajes que dominas. \nPiensa en tu proyecto, avanza en el si es posible, para que lo termines durante el evento. Puede ser que tu aplicacion, sea la proxima Killer App mas famosa del mundo.\n\nRecuerda que habra alimentos gratis durante el evento gracias a nuestros patrocinadores, asi que relajate, es hora de hacer lo que te gusta, programar. \n \n Siguenos en twitter: @Laguna_Gtug y @Darkvander \n\nHappy Coding! ")
									
            if enviados == 8:
                enviados = 0
                self.response.out.write("Enviados=32<br>Esperando 1 minuto <br>")	
                time.sleep(65)
				
class MainPage(webapp.RequestHandler):
  def get(self):
		self.response.headers['Content-Type'] = 'text/html'
		path = os.path.join(os.path.dirname(__file__), 'registro.html')
		f = open(path,"r")
		self.response.out.write(f.read())			
		
application = webapp.WSGIApplication(
                                     [('/', MainPage),
									  ('/Register', Register),
									  ('/List', Lista),
									  ('/Borra', Borra),
									  ('/Invite', Invita)
									 ],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()
